home *** CD-ROM | disk | FTP | other *** search
/ Nibble Magazine / nib12.dsk / SORT DEMO PROGRAM 1.bas < prev    next >
BASIC Source File  |  2023-02-26  |  2KB  |  46 lines

  1. 0  HOME : GOTO 110
  2. 10 Z = 1
  3. 20 Z = 3 *Z +1: IF Z <NUM  THEN 20
  4. 30 Z = (Z -1)/3: IF Z <1  THEN  RETURN 
  5. 40  FOR I = Z +L TO H:J = I -Z
  6. 50 K = J +Z: IF A = ( MID$ (NA$(J),M,N) > MID$ (NA$(K),M,N))  THEN TEMP$ = NA$(J):NA$(J) = NA$(K):NA$(K) = TEMP$:J = J -Z: IF J > = L  THEN 50
  7. 60  NEXT I: GOTO 30
  8. 110 :
  9. 120 :
  10. 130  REM  FIX RANDOM NUMBER GENERATOR
  11. 140 :
  12. 150 :
  13. 160  POKE 201,128: POKE 202,79: POKE 203,199: POKE 204,82: POKE 205,255
  14. 180  DIM NA$(500),B$(500)
  15. 190 :
  16. 200 :
  17. 210  REM  GENERATE RANDOM WORDS TO SORT
  18. 220 :
  19. 230 :
  20. 240  HOME : VTAB 12: HTAB 12: INPUT "HOW MANY WORDS? ";X$:NUM =  VAL(X$): IF NUM <1  OR NUM >500  THEN  PRINT  CHR$(7): GOTO 240
  21. 250  VTAB 12: HTAB 7: FLASH : PRINT "GENERATING "NUM" RANDOM WORDS": NORMAL 
  22. 260  FOR I = 1 TO NUM:A$ = "": FOR J = 1 TO 10:A$ = A$ + CHR$( INT( RND(1) *26 +65)): NEXT :NA$(I) = A$:B$(I) = A$: NEXT 
  23. 270 :
  24. 280 :
  25. 290  REM  IF YOU WISH TO TIME THE SORT
  26. 300  REM  START THE TIMER AS SOON AS THE
  27. 310  REM  WORD SORTING STARTS TO FLASH
  28. 320 :
  29. 330 :
  30. 340  HOME : VTAB 12: HTAB 6: PRINT "PRESS ANY KEY TO BEGIN SORT"
  31. 350 X =  PEEK( -16384): IF X <128  THEN 350
  32. 360  POKE  -16368,0
  33. 370 :
  34. 380 :
  35. 390  REM  SORT INTO ASCENDING ORDER
  36. 400 :
  37. 410 :
  38. 420  HOME :L = 1:H = NUM:M = 1:N = 10:A = 1:X =  FRE(0): VTAB 12: HTAB 17: FLASH : PRINT "SORTING" CHR$(7): NORMAL : GOSUB 10: PRINT  CHR$(7)
  39. 430 :
  40. 440 :
  41. 450  REM  PRINT OUT SORTED AND UNSORTED WORDS
  42. 460 :
  43. 470 :
  44. 480  HOME : HTAB 10: INVERSE : PRINT NUM" RANDOM WORDS": PRINT : HTAB 8: PRINT "UNSORTED";: HTAB 22: PRINT "SORTED": NORMAL : POKE 34,4
  45. 490  HOME : FOR I = 1 TO NUM: PRINT  RIGHT$("    " + STR$(I),4)". "B$(I);: HTAB 20: PRINT NA$(I): NEXT 
  46. 500  PRINT : HTAB 12: PRINT "ALL DONE ...": FOR I = 1 TO 5000: NEXT : TEXT : CLEAR : GOTO 180